Python 基本操作

提供:yonewiki

Pythonの記事へ戻る

概要

追加モジュールのインストールとか基本的な操作についてまとめておきます。

Python

  • モジュールのインストール
例 spleeterモジュールの場合
※spleeterモジュールがこれだけで簡単にインストールできるとは限りません。もっといろいろ設定してからでないと上手くいかないこともあります。
pip install spleeter


  • モジュールのバージョンを指定してのインストール
例 spleeter1.4.9モジュールの場合
※spleeterモジュールがこれだけで簡単にインストールできるとは限りません。もっといろいろ設定してからでないと上手くいかないこともあります。
pip install spleeter==1.4.9


  • モジュールのアンインストール
例 spleeterモジュールの場合
pip uninstall spleeter


  • インストールするモジュールのバージョン一覧取得
例 spleeterモジュールの場合
>pip install spleeter==0.0.0
ERROR: Could not find a version that satisfies the requirement spleeter==0.0.0 (from versions: 1.4.1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 2.0, 2.0.1)
ERROR: No matching distribution found for spleeter==0.0.0
存在しないバージョンをインストールしようとすると、存在するバージョンを紹介してくる仕組みを逆手に取ったようなやり方です。

Anaconda

  • conda環境の情報を確認する。
conda info


  • conda環境の情報のシステムに関わる情報だけを確認する。
conda info -s
上記の他 -a で全部、-bで基本情報、-eで環境情報。-eはconda(base)やpython37(py37)のような仮想環境が一覧できると思っておけばよいかと。


  • conda環境の確認
conda config --show


  • condaでのオフライン方式モジュールInstall
例 spleeterモジュールの例
※1.このようなバージョンのものはありません。
※2.spleeterがこれだけで簡単にインストールできるとは限りません。
conda install --offline spleeter-0.0.0-py38_0.tar.bz2
モジュール本体はあらかじめコマンドを使う時のカレントディレクトリに保管する必要があります。そうでない場合はフルパスを--offlineの後ろの引数で指定する必要があります。


  • conda環境のモジュールInstall
例 spleeterモジュールの例
※1.このようなバージョンのものはありません。
※2.spleeterがこれだけで簡単にインストールできるとは限りません。
conda install spleeter
インストールを始めて1時間以上examining conflictとかって続く場合は競合調査の永久ループに入っています。別のモジュールからのインストールをするとか、専用の仮想環境を追加(下の方にコマンドは紹介しています。)するとか、Channelを特定するとか、工夫が必要になっていると思われます。
  • conda環境のモジュールを特定のChannelからInstall
例 spleeterモジュールをconda-forgeというChannelからインストールする例
※1.このようなバージョンのものはありません。
※2.spleeterがこれだけで簡単にインストールできるとは限りません。
conda install -c conda-forge spleeter
  • conda環境のモジュールunInstall
例 spleeterモジュールの例
conda uninstall spleeter


  • conda環境のモジュールの最新版への更新
例 spleeterモジュールの例
※1.spleeterがこれだけで簡単に更新できるとは限りません。
conda update spleeter


  • conda環境のモジュールのキャッシュ削除
例 全部のキャッシュを削除する例
conda clean -all
Windowsでは、以下のようなパスの下のモジュールのパッケージのキャッシュが削除されます。
C:\ProgramData\Anaconda3\pkgs
C:\Users\[ユーザ名]\.conda\pkgs
C:\Users\[ユーザ名]\AppData\Local\conda\conda\pkgs
これらは、Windowsアプリのインストーラーみたいなものです。インストール後にモジュールを使う分には必要の無いものです。ここで言うキャッシュは少し昔で言えば、インストール用のCDやDVDをずっとハードディスクの中に収めておくようなものです。CDは不要だから何処かに収納すると思います。モジュールの場合これをパッケージと呼んでいます。これがクラウドのような場所(Channel)にあるので、手元には不要ということです。でもクラウドだから消したら、またダウンロードに時間がかかるということはあります。ずっととっておいてもあまりいいことは無いのでうまく動いていて、安定しているなら、消した方が良いでしょう。
--all のオプションを付けた実行ではインデックス(--i), ロックファイル(--l), tarball(--t), パッケージ(--p), ソース(--s)のキャッシュが消されます。全て消しても不都合は生じないものです。インデックスは一覧を検索するとき早くなる仕組みです。辞書順でどこに何のファイルがあるかをあらかじめ準備しておいて、すぐに表示できるようにします。イチからディスクにあるファイルの名前を調べて、表示するより速くなります。ロックファイルは、ファイルを使う時にファイル毎にロックファイルを置いて状態を記します。ロックファイルの中身の状態をみて、ファイルが使える状態にあるかを確認する仕組みです。パッケージは先に説明したとおりです。ソースファイルはパッケージのインストールを補助するようなプログラムコード一式です。tarballはパッケージのキャッシュの中でもtar形式になっているものを差します。tar形式のことをtarball(ターボール)と呼びます。tarは複数のファイルを一つにまとめるという仕組みで、圧縮は関係ないです。何を使って圧縮をしたかで、拡張子が分離します。compress=tar.Zあるいは.taz、gzip =.tar.gzあるいは.tgz、bzip2=.tar.bz2です。


  • conda環境のモジュール一覧のバージョン確認
conda list
anacondaはモジュールが多いはずなので、全部を表示するのには時間がかかります。特定のモジュールについて知りたい場合は二つ下のような方法がお勧めです。


  • conda環境のモジュール一覧の更新が必要なモジュール一覧のバージョン確認 既存と最新版の比較表示
そのままは実行しては駄目ですが、以下の手順です。
conda update --all
としてから、本当に更新するかという問い合わせで n キーをおしてEnter。


  • conda環境の特定モジュールのバージョン確認
例 spleeterモジュールの例
conda list spleeter
部分一致したモジュール名のバージョン確認なので、spleeter以外のspleeterを含むモジュールが表示される可能性があります。
    package                    |            build
    ---------------------------|-----------------
    spleeter-0.0.0             |           py38_0         4.9 MB
    ------------------------------------------------------------
                                           Total:         4.9 MB
上記のような結果が返ってくる事でしょう。buildの欄は、バージョンとは他に管理されているもので、同一バージョンの中でbuildだけが異なるモジュールが存在することがあるので付けられているものです。buildはモジュールを作るときにどのバージョンで作ったかを記すものですが、作成者によってさまざまな命名がされます。いずれにせよbuildも番号が新しいものが優先されてインストールされたりする仕組みになっています。
  • conda環境の特定モジュールのバージョン確認
例 base環境つまりconda環境・anaconda環境の例
conda list -n base


  • condaの設定のssl_verifyをFalseにしたりTrueにする。
conda config --set ssl_verify False
もしくは
conda config --set ssl_verify True
sslの設定が上手く設定されていないとcondaを使ったダウンロードが出来ない場合がある。相手の認証情報を確認するための設定をするのは意外と面倒な場合もあるので、省略する時に使う。但しFalse状態は正体不明のところからDownloadするのは危険なので、取り扱いに注意が必要。


  • conda環境のChannels設定(モジュールをダウンロードする場所)の確認
例 defaultのダウンロード先を向いている場合
(base) PS C:\...Anaconda3>conda config --get channels
(base) PS C:\...Anaconda3>
のようにエラーも何に表示されずに次のコマンド受付になった場合はdefaultを向いています。
つまり
https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
のようなモノです。conda config --showで確認すると
default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - https://repo.anaconda.com/pkgs/msys2
....
....
subdirs:
  - win-64
  - noarch
と指定されている部分です。この組み合わせがdefaultと言っています。具体例なので人によって異なる設定になっていると思います。
noarchはノーアーキテクチャーを意味しています。Channelとしては、実際にはアーキテクチャーを問わないという意味で使われていて、それぞれの環境に合わせて動くようになっているモジュールなんかが含まれています。そのディレクトリの中にあるモジュールも確認するということです。


  • conda環境のChannels設定(モジュールをダウンロードする場所)を追加する。

例:conda-forgeというChannelを追加する。conda-forgeは有志であらゆるモジュールのインストーラを配置することによって運営されている。なかなか凄いChannelで検索しても分かるようにかなり有名なChannelです。

conda config --append channels conda-forge
一度でも追加するとconda config --get channelsの結果が変わるのかもしれまえん。
(base) PS C:\...Anaconda3>conda config --get channels
--add channels 'conda-forge'   # lowest priority
--add channels 'defaults'   # highest priority
(base) PS C:\...Anaconda3>
後から追加したものはlowest priority(低優先度)ですが、確かにChannelに追加されているので、問題ないでしょう。


  • conda環境のChannels設定(モジュールをダウンロードする場所)を削除する。
例:conda-forgeというChannelを削除する場合。
conda config --remove channels conda-forge


  • condaの中にある仮想環境を追加する。
例:python2.7をCondaの中に作る場合。
conda create -n py27 python=2.7 anaconda -y
py27 は python=2.7と対応していて、anacondaは2.7にanacondaモジュールを入れてcondaコマンドが使えるモノを構築するという意味です。これら部分だけ変更して追加します。py27の部分は任意です。自由に名前を付けられます。何用のpythonなのか?で分けてもいいわけです。例えば深層学習用ならconda create -n tensorflaw python=3.8 anaconda tensorflow -yというような感じで作るのだと思います。仮想環境は容量の許す限り作れます。それぞれの事情に合わせて使い分ける環境を用意するとよいのかもしれません。一つの目的毎に、一つの環境を作ると、小さい環境で、必要最低限なので、環境がぐっちゃぐっちゃになっても戻りやすい。いつでも手早くよい状態でプログラムを開発することが出来ます。-yは本当にやるのか?という確認を省略です。あとでyとかnを押してもいいです。


  • condaの中にある仮想環境を削除する。
例:Condaの中のpython2.7の仮想環境を削除する場合。
conda remove -n py27 --all
-nはnameの頭文字で任意でつけた名前で削除対象を決めるという意味です。なので後ろに続く引数もpy27ような名前の引数になっています。-allはバッサリ全部消すという意味です。先に示したconda info -eで現在、存在している仮想環境の名前が一覧で取得できます。-allを付け忘れるといろいろとゴミが残ってしまいます。例えばパッケージのキャッシュとか。キャッシュが残っていればまた再インストールのときに速いということもありますが、それに問題があれば、邪魔にもなったりするかもしれません。キャッシュのフォルダから直接を消すというような作業も出来るので、自分でうまいこと削除できるのであれば、-allはいらないかもしれないです。たぶん-allつけたほうが良いと思いますけど。逆に全部じゃなくて一部分だけを消すオプションもあります。-I でインデックスファイル、 -l ロック確認用ファイル、-t tar圧縮ファイル、-p 使ってないパッケージ、-s ソースコードみたいな感じです。


  • conda環境(base)の利用
conda activate
activateの後ろ引数を省略すると(base)となるconda環境になります。


  • conda環境あるいは仮想環境利用を開放する
conda deactivate

Pythonの記事へ戻る